Transaction effects

ABSTRACT

A method comprising creating and storing, in computer memory, a financial graph having nodes and edges, wherein the nodes include first nodes representing assets and second nodes representing any one or more of accounts in which one or more of the assets are held, individuals who own one or more of the assets, or legal entities who own one or more of the assets; obtaining, from an asset custodian data source, asset transaction data representing a plurality of financial transaction events; identifying a financial transaction type represented by one or more of the plurality of financial transaction events; generating, based on the identified financial transaction type, a plurality of transaction effect objects; wherein each of the plurality of transaction effect objects is associated with a particular edge in the financial graph and represents one of a credit to an account type associated with the particular edge and a debit from an account type associated with the particular edge.

CROSS-REFERENCE TO RELATED APPLICATIONS; BENEFIT CLAIM

This application claims the benefit as a Continuation of applicationSer. No. 13/714,319, filed Dec. 13, 2012, the entire contents of whichis hereby incorporated by reference as if fully set forth herein, under35 U.S.C. §120. The applicant(s) hereby rescind any disclaimer of claimscope in the parent application(s) or the prosecution history thereofand advise the USPTO that the claims in this application may be broaderthan any claim in the parent application(s).

TECHNICAL FIELD

The present disclosure relates to data processing, particularlytechniques for representing, storing, and analyzing financialtransaction data in a computer-implemented financial analysis system.

BACKGROUND

The approaches described in this section are approaches that could bepursued, but not necessarily approaches that have been previouslyconceived or pursued. Therefore, unless otherwise indicated, it shouldnot be assumed that any of the approaches described in this sectionqualify as prior art merely by virtue of their inclusion in thissection.

Financial advisors, such as registered investment advisors (RIAs) andtheir firms, institutional investors, and others often analyze financialdata associated with client, customer, or personal assets held byvarious different financial institutions. In order to analyze thepotentially vast number of financial transactions that may occur withthe assets, a computer-implemented financial analysis system may beutilized for purposes of analysis and reporting on transaction dataobtained from those financial institutions. For example, transactiondata obtained from a financial institution may record any number offinancial transactions affecting a particular set of assets such as, forexample, stock purchases, stock splits, foreign exchange transactions,company mergers, fund contributions, or any other recorded financialtransaction.

Typically, transaction data obtained from a financial institution is ina table or other similar format, with each row in the table representinga particular transaction event and labeled with a transaction typeidentifier from a large set of possible transaction types defined by theparticular institution. For example, a foreign currency exchangetransaction recorded by one financial institution may be represented bymultiple rows in a table: one row corresponding to an amount of onecurrency leaving an account and labeled with a “foreign exchange out”identifier, and a second row corresponding amount of a second currencybeing deposited into an account and labeled with a “foreign exchange in”identifier. As illustrated by the foregoing example, transactions thatare conceptually a single act may be represented by particular financialinstitutions in multiple rows identified by different transaction typeidentifiers. Further, different financial institutions may representparticular financial transactions using varying numbers of rows andusing inconsistent identifiers.

The representation of financial transaction data is this manner presentsa number of challenges to efficiently representing, storing, analyzing,and implementing other financial performance calculations on the data ina computer-implemented financial analysis system. For example, financialperformance calculations defined in terms of the transaction typespresented by the financial institutions may result in burdensomerefactoring of the computer program code that specifies operation of thesystem each time new transaction types are added or modified by aparticular financial institution. Further, cumbersome and error-pronereconciliation logic is often required in order to properly account forthe varying transaction representations across financial institutions.

SUMMARY

The appended claims may serve as a summary of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings:

FIG. 1A illustrates a computer system that may be used to implement anembodiment.

FIG. 1B illustrates a method of transforming asset transaction dataobtained from custodian data sources into transaction objects accordingto an embodiment.

FIG. 2 illustrates an example representation of obtained assettransaction data in a canonical transaction representation format.

FIG. 3 illustrates an example code segment implementing generation of atransaction object and associated transaction effect objects.

FIG. 4 illustrates a relationship between transaction effect objects andedges of a financial graph.

FIG. 5 illustrates example components of a transaction effect object.

FIG. 6 illustrates a relationship between transaction object types,transaction effects, and financial performance calculations.

FIG. 7 illustrates a computer system with which an embodiment may beimplemented.

DETAILED DESCRIPTION OF EXAMPLE EMBODIMENTS

In the following description, for the purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the present invention. It will be apparent, however,that the present invention may be practiced without these specificdetails. In other instances, well-known structures and devices are shownin block diagram form in order to avoid unnecessarily obscuring thepresent invention.

1.0 General Overview

In an embodiment, a method comprises creating and storing, in computermemory, a financial graph having nodes and edges, wherein the nodesinclude first nodes representing assets and second nodes representingany one or more of accounts in which one or more of the assets are held,individuals who own one or more of the assets, or legal entities who ownone or more of the assets; obtaining, from an asset custodian datasource, asset transaction data associated with one or more of the assetsrepresented by the first nodes of the financial graph; transforming theasset transaction data into one or more stored transaction objects,wherein each transaction object comprises a plurality of transactioneffect objects; wherein each of the plurality of transaction effects isassociated with a particular edge in the financial graph and representsone of a credit to an account type associated with the particular edgeand a debit from an account type associated with the particular edge. Inone feature, each of the plurality of transaction effects identifies aparticular first node and a particular second node of the financialgraph.

In another feature, each of the plurality of transaction effects furtheridentifies one or more of a number of units by which an associatedfinancial position is modified, a value representing a magnitude of anincome or an expense occurring relative to the associated financialposition.

In an embodiment, transforming the asset transaction data into one ormore stored transaction objects comprises: identifying a transactiontype that one or more transaction entries in the asset transaction datarepresent; creating a single particular transaction object thatcorresponds to the transaction type.

In one feature, the single particular transaction object comprises aparticular plurality of transaction effects that collectively representa plurality of changes to one or more accounts.

In another feature, obtaining asset transaction data further comprisestransforming the asset transaction data into a canonicalized transactiondata representation based on a canonical transaction data representationformat.

In an embodiment, the method further comprises retrieving one or moreparticular transaction effects associated with one or more edges in thefinancial graph; generating one or more financial performancecalculation values based on the particular transaction effects; causingdisplaying one or more of the generated values.

In another feature, an edge represents one or more of asset ownership, aliability, or equity ownership.

In another feature, the asset transaction data is represented as tabulardata comprising one or more rows identifying one or more financialtransaction events. In another feature, the account type is one of anassets account, a liabilities account, an equity account, an incomeaccount, an expenses account, a sub-account of another account.

2.0 Structural and Functional Overview

In one embodiment, a computer-implemented financial analysis systemprovides for the representation, storage, and analysis of assettransaction data as part of a financial graph managed in computermemory. In this context, a financial graph refers to a graph having anynumber of nodes and edges and that represents a set of investmentholdings based on client or customer asset transaction data receivedfrom one or more financial institution data sources, referred to hereinas asset custodian data sources. In an embodiment, the nodes of thefinancial graph may represent assets, accounts in which one or more ofthe assets are held, individuals who own one or more of the assets, orlegal entities who own one or more of the assets. In an embodiment, theedges of the financial graph may represent relationships between nodessuch as asset ownership relationships, liability relationships, equityownership relationships, and commitments for the purchase or sale ofvarious assets.

In an embodiment, asset transaction data received from asset custodiandata sources is transformed into one or more programmatic objects,referred to herein as transaction objects, that may be stored andfurther manipulated. A transaction object generally represents afinancial transaction identified in obtained asset transaction data andinvolving one or more nodes in a financial graph. For example,transaction objects may represent various financial transactionsrecorded by a financial institution such as foreign exchangetransactions, purchases or sales of stock, company mergers, or any otherfinancial transaction.

In an embodiment, a transaction object is associated with a plurality oftransaction effect objects. A transaction effect object generallyrepresents a modification to an accounting account associated with aparticular edge in the financial graph. In this context, an accountingaccount refers to one of the accounts, or a sub-account thereof,contained in the basic accounting equation:Assets=Liabilities+Equity+(Income−Expenses). In an embodiment, therepresentation of asset transaction data in this manner is used to moreefficiently analyze asset transaction data obtained from a wide-varietycustodian data sources, as further described herein.

FIG. 1 illustrates a computer system that may be used to implement anembodiment. In an embodiment, computer memory 100 stores a graph 102that represents a particular set of investment holdings. In anembodiment, client or customer investment data is obtained from one ormore asset custodian data sources 120, such as brokerages, banks, orother financial institutions, and transformed into graph data prior tostorage into a data repository for use by the system, as furtherdescribed herein.

Memory 100 forms part of a computer system having a processor, massstorage, input-output devices, and other elements that are omitted inFIG. 1 for purposes of clarity. View computation unit 106 may beconfigured for rendering and communicating financial performancecalculations and other reports to a display unit of client computer 116.In an embodiment, graph 102, view computation unit 106, financialperformance calculation unit 108, and transaction object generation unit110 are implemented using object-oriented programming techniques inwhich nodes of the graph are represented using programmatic objects. Forexample, JAVA® may be used. However, in other embodiments, the graph102, view computation unit 106, financial performance calculation unit108, and transaction object generation unit 110, described furtherherein, may be implemented within server computer 118 usingspecial-purpose logic, firmware, or other computing elements so thatelements 100, 110, 106, 108, 110, and 112 form a special-purposecomputer capable of performing the processes that are described herein.

In an embodiment, the foregoing elements of FIG. 1 form part of a servercomputer 118 that is coupled directly or indirectly through one or morecomputer networks, represented by network 114, to a client computer 116.Network 114 broadly represents and may comprise one or more LAN, WAN, orinternetwork links and may comprise the public internet through the useof appropriate protocols for ensuring data security, user authenticationand user authorization.

Client computer 116 may comprise an individual client computing devicesuch as personal computer, workstation, laptop, netbook, tabletcomputer, or smartphone that is coupled through network 114 to the otherelements of FIG. 1. Client computer 116 typically hosts an internetbrowser program which, in an embodiment, is configured with virtualmachine program execution capability. For example, client computer 116may host a JAVA virtual machine and may receive and execute one or moreJAVA files that cause the browser to display a graphical user interfacethat receives data from and facilitates interaction with the servercomputer 118 and view computation unit 106.

Custodian interface unit 112 is coupled directly or indirectly throughnetwork 114 to one or more asset custodian data sources 120. Typicallythere are multiple asset custodian data sources 120 located at multipledifferent asset custodians such as banks, brokerages, mutual fundcompanies, or other financial institutions, and element 120 in FIG. 1broadly represents any number of such data sources and custodians. In anembodiment, asset custodian data sources 120 serve as an authoritativesource of data about accounts and financial transactions involvingassets associated with individuals or other entities represented in datarepository 104 and graph 102. Custodian interface unit 112 is configuredto obtain account and asset transaction data periodically or throughlive data feeds from asset custodian data sources 120. In an embodiment,asset transaction data may be obtained from asset custodian data sources120 in any number of formats including Extensible Markup Language (XML),comma-separated values (CSV), JSON (JavaScript Object Notation), or anyother data transfer formats.

Account and asset transaction data may be associated with an individual,a legal entity, or a group of individuals and/or legal entities such asone or more clients of an RIA firm. Transaction object generation unit110 is configured to transform account and asset transaction dataobtained from asset custodian data sources 120 into objects that may berepresented as part of graph 102, as further described herein. Graph 102may represent, in computer memory, elements of and relationships in theassets and transaction data for purposes of efficiently analyzing theassets and transaction data and producing views and analytical reportsof the assets and transaction data organized in different ways. Graph102 may be formed in memory 100 based on data records obtained from datarepository 104. Graph 102 may comprise any number of nodes and edges,and the particular graph shown in FIG. 1 is provided solely toillustrate one clear example and not as a requirement or limitation.

Graph 102 may comprise nodes and edges having any level of complexity,and there is no requirement that nodes are organized in a hierarchicalarrangement; circular references may be represented. As an example,graph 102 comprises nodes for individuals named Beth and Ken who have anownership or trusteeship relationship to a Trust. The Trust is relatedto a company, Alpha Holdings LLC, which is also related to a secondcompany, Beta Holdings LLC that may own a Brokerage Account having asecurity instrument and other instruments i2, i3. The other instrumentsmay represent stocks, bonds, options, or any other financial instrumentthat may be traded or receive an investment; for purposes ofillustrating a clear example, three instruments are shown in FIG. 1 butpractical embodiments may use any number of instruments. Beta HoldingsLLC further has a relationship to Ken and instrument i1 has arelationship to Beth; these relationships circle back within the graphand provide examples of non-hierarchical node-edge relationships. Forexample, one circular reference is the path Ken→Trust→Alpha HoldingsLLC→Beta Holdings LLC→Ken.

Edge 110 may represent an asset ownership relationship. Edge 110 orother edges may represent other concepts such as a liabilityrelationship, or an equity ownership relationship; thus, one node mayrepresent a security, another node may represent a brokerage account,and an edge connecting the two nodes may represent that the first nodeowning a number of units of the second node.

Graph nodes may receive data for attributes of the nodes from assetcustodian data sources 120, from a global data source, or from otherdata in the data repository. In an embodiment, financial performancecalculation unit 108 is configured to perform financial performancecalculations associated with graph 102. In an embodiment, viewcomputation unit 106 is configured to transform the calculationsperformed by financial performance calculation unit 108 into one or moretable views, graphs, charts, and other output, as further describedherein.

3.0 Transforming Asset Transaction Data

FIG. 1B illustrates a method of transforming asset transaction dataobtained from one or more custodian data sources into transactionobjects comprising transaction effects, according to an embodiment. Atblock 130, asset transaction data is obtained from a custodian datasource, the obtained data also referred to herein as custodian data. Thecustodian data includes representations of one or more assettransactions such as, for example, stock purchases, company mergers,stock dividends, or any other type of transaction affecting one or moreassets and recorded by a custodian associated with the custodian datasource. The asset transactions represented in the custodian data may beidentified by one or more transaction type identifiers defined by theparticular custodian. In an embodiment, each custodian may define anduse a set of transaction type identifiers that may be entirely orpartially different from the transaction type identifiers used by othercustodians.

At block 132, obtained custodian data is transformed based on acanonical transaction data representation format. In an embodiment, acanonical transaction data representation format defines arepresentation of custodian data using a single set of transaction typeidentifiers. The single set of transaction type identifiers is used touniformly represent financial transactions that may be represented indifferent ways by various custodians. For example, custodian data may bereceived from a first brokerage firm in table form and including arepresentation of a first stock purchase transaction in a single tablerow and identified by a particular transaction type identifier.Custodian data also may be received from a second brokerage firm thatincludes a representation of a second stock purchase transaction that isspread across multiple rows and using different transaction typeidentifiers. In the example, custodian interface unit 112 may transformthe custodian data received from each of the first brokerage firm andthe second brokerage firm into a canonicalized transaction datarepresentation that uses the same transaction type identifier forrepresenting both stock purchase transactions. As further describedherein, the canonical transaction data representation format may beimplemented using any number of data representation structures.

At block 134, one or more transaction objects are generated from thecanonicalized transaction data representation. In an embodiment,generating transaction objects generally comprises identifying financialtransactions included in a canonicalized transaction datarepresentation, and generating and storing one or more transactionobjects based on the identified financial transactions. In anembodiment, a transaction object is a programmatic object representing aparticular type of financial transaction and generated based on aparticular transaction object type definition. In an embodiment, aseparate transaction object type definition is created for eachtransaction object type of a set of system-defined transaction objecttypes. For example, a stock dividend transaction identified in acanonicalized transaction data representation may cause transactionobject generation unit 110 to generate a transaction object based on atransaction object type definition that represents dividendtransactions; similarly, an identified stock redemption transaction maycause generating a transaction object based on a transaction object typedefinition that represents stock redemptions. Each generated transactionobject includes metadata specifying a type of transaction represented bythe transaction object, graph nodes associated with the transaction, andother information, as further described herein.

In an embodiment, the system-defined transaction object types representa single set of transaction types that may be used to representtransactions identified in custodian data obtained from any number ofasset custodian data sources 120. In one embodiment, the system-definedtransaction object types may correspond to the transaction types definedby the canonical transaction data representation format, as describedabove. In this manner, the type of transaction object generated for eachtransaction identified in a canonicalized transaction datarepresentation may be based directly on the transaction type identifierin the canonicalized transaction data representation.

At block 136, generation of transaction objects further includesgenerating one or more transaction effects objects. In an embodiment,transaction effects objects are programmatic objects that representparticular accounting events associated with a financial transaction. Inan embodiment, each transaction object type definition includesspecification of one or more particular transaction effects thatrepresent the accounting events associated with the transaction objecttype. In this context, an accounting event generally refers to thedebiting or crediting of a particular accounting account, for example,similar to manner in which financial transactions may be recorded in adouble-entry bookkeeping system. The term “accounting accounts” is usedherein to distinguish such accounts, maintained in an accountingcomputer system, from financial institution accounts that actually holdfunds, assets or instruments at custodians or other financial entities.In an embodiment, each edge in the financial graph is associated with aplurality of accounting accounts against which credits and debitsrepresented by transaction effects objects may be applied. In anembodiment, a transaction effect object represents the most fine-grainedor atomic element in the financial analysis system.

In an embodiment, the accounting events represented by transactioneffect objects associated with a particular transaction object maycollectively conform to the accounting equality of debit and credittransactions across all accounting accounts specified by the transactioneffect objects. In other words, for a particular transaction object, thesum of the values specified by one or more associated transaction effectobjects representing debits generally equals the sum of the valuesspecified by one or more associated transaction effect objectsrepresenting credits. The accounting equality may be used, for example,to check for potential errors in received custodian data and in otherdata consistency checks.

At block 138, one or more financial performance calculations aregenerated based on one or more stored transaction effects objects. Forexample, financial performance calculation unit 108 may perform one ormore financial performance calculations in response to a user requestfor a particular financial report involving one or more nodes in graph102. Financial performance calculations may include calculations suchas, for example, total asset returns, internal rates of return, anddividend yields. Financial performance calculations may also refer tothe generation of entire reports that involve many assets including, forexample, income statements, balance sheets, and cash flow statements.View computation unit 106 may generate reports and other displays basedon requested financial performance calculations that may be displayed toa user in any number of formats. The calculation of financialperformance calculations based on transaction effects objects providesfor a number of efficiencies, as further described herein.

3.1 Canonical Transaction Data Representation Format

In an embodiment, custodian interface unit 112 obtains custodian datafrom asset custodian data sources 120 and transforms the custodian datainto a canonicalized transaction data representation. FIG. 2 illustratesan example representation 200 of obtained custodian data based on acanonical transaction data representation format. Representation 200includes two transactions 202, 204 that may have been identified inasset transaction data obtained from custodian data sources. Forexample, transaction 202 may represent a stock purchase transaction andincludes a transaction identification string (“buy1”), a transactiontype identifier (“buy”), dates associated with the transaction (“trade”:“2011-12-12”, “settle”: “2011-12-15”), and three lines representingtransaction effects in the brackets labeled “effects.”

In an embodiment, transaction 202 may have been generated, for example,in response to custodian interface unit 112 identifying a stock purchasetransaction recorded in asset transaction data obtained from assetcustodian data sources 120. In an embodiment, custodian interface unit112 provides a mapping from the representation of various transactionsidentified in obtained asset transaction data into a canonicaltransaction data representation format, such as the examplerepresentation illustrated in FIG. 2. In an embodiment, the process ofidentifying particular transactions in asset transaction data obtainedfrom asset custodian data sources 120 and mapping those transactions toa canonical transaction data representation may be particular to eachindividual asset custodian and obtained asset transaction data format.The particular approach for identifying transactions in assettransaction data and mapping them to a canonical transaction datarepresentation is not critical.

Transaction 204 includes information that may represent an identifiedforeign exchange transaction. For example, transaction 204 includes atransaction identification string (“forex1”), a transaction typeidentifier (“forex”), dates associated with the transaction (“trade”:“2011-12-25”, “settle”: “2011-12-27”), and two transaction effects.

For the purposes of illustrating a clear example, the canonicaltransaction data representation 200 illustrates two transactions; inother embodiments, a canonical transaction data representation mayinclude any number of transactions identified in custodian data.Further, the particular format of canonical transaction datarepresentation 200 is only one example representation format, and anytransaction representation may be used, such as XML, CSV, JSON, or anyother data encoding formats. In still other embodiments, assettransaction data may be directly transformed into transaction dataobjects without conversion into a canonical transaction datarepresentation format. In one embodiment, a canonical transaction datarepresentation such as representation 200 may be stored by custodianinterface unit 112 in one or more files for use by other systemcomponents.

3.2 Generating Transaction Objects

In an embodiment, in response to custodian interface unit 112 obtainingcustodian data from asset custodian data sources 120, transaction objectgeneration unit 110 generates one or more transaction objects, includingcreating and storing the transaction objects in computer memory. In anembodiment, generating transaction objects generally comprisesinstantiating one more or programmatic objects based on transactionsidentified in a canonicalized transaction data representation generatedby custodian interface unit 112 for storage in data repository 104and/or representation in graph 102 in memory for further use, reference,and manipulation.

In an embodiment, in response to identifying a particular transaction,transaction object generation unit 110 generates a transaction objectbased on a transaction object type definition from a plurality oftransaction object type definitions in the system. FIG. 3 illustratesexample program code 300 that illustrates a transaction object typedefinition that may be used to generate a transaction object of aparticular transaction type. In program code 300, for example, thesyntax Tx(“buy”) in code segment 302 may indicate that the program coderepresents specification of a transaction object type representingpurchases of a security. For example, program code 300 may be used togenerate a transaction object based on the stock purchase informationincluded in transaction 202 in canonical transaction data representation200. In an embodiment, similar program code specifying a differenttransaction object type definition may be used to generate a transactionobject representing foreign exchange transactions based on the foreignexchange information included in transaction 204, and so forth.

Code segments 302, 304 illustrate program code specifying variousmetadata and transaction effect object definitions associated with atransaction object generated based on program code 300. For example,code segment 302 illustrates the specification of particular nodesrelated to a security purchase transaction, including a noderepresenting an owner of the purchased securities (“o”), a noderepresenting the cash account used to purchase the securities (“co”), anode representing the type of currency used in the transaction (“c”),and a node representing the purchased security (“sec”). In anembodiment, data values representing the actual nodes associated with aparticular transaction may be supplied as parameters when thetransaction object is generated.

In an embodiment, generated transaction objects may be stored in a datarepository 104 for later retrieval. For example, transaction objects maybe serialized and stored in a column in a database. Storage of thegenerated transaction objects enables later retrieval of the transactionobjects and associated transaction effects objects for the purposes ofanalysis, generating reports, and other financial performance metrics asfurther described herein.

3.3 Transaction Effects

In an embodiment, program code defining a particular transaction objecttype specifies a set of transaction effect definitions that correspondto the particular transaction object type and that enable generatingtransaction effect objects. Code segment 304 illustrates program codespecifying three transaction effect definitions for a security purchasetransaction object type. The transaction effect definitions included incode segment 304 generally correspond to the accounting events resultingfrom following components of a security purchase transaction: (1) atransfer of the purchased securities into a brokerage account; (2) thelevying of a brokerage fee associated with the purchase of thesecurities; and (3) a transfer of cash from an account to pay for thesecurities and brokerage fee. In an embodiment, transaction effectdefinitions for other transaction object types may differ depending onthe particular nature of the transaction type.

FIG. 4 illustrates a representation of a generated transaction objectand associated transaction effect objects in relation to a segment of afinancial graph. For example, transaction object 412 may have beengenerated based on program code such as program code 300. In FIG. 4, agraph segment is composed of nodes 402, 404, 406 and edges 408, 410.Node 402 may represent a security such as, for example, an equitysecurity, debt security, or other similar financial instrument. Edges408, 410 represent a relationship between the connected nodes. Forexample, edge 408 may represent a commitment by brokerage account (node404) to purchase one or more units of a security (node 402). The graphsegment illustrated in FIG. 4 may be part of a larger financial graph,such as graph 102, and may include any number of nodes and edges; theillustrated graph segment is used only for the purposes of illustratinga clear example.

In an embodiment, transaction object 412 represents a purchase of anumber of units of a security (node 402) facilitated by brokerageaccount (node 404) using an amount of cash (node 406) associated withthe brokerage account. For example, assuming node 402 represents stockin a particular company, transaction object 412 may have been generatedas a result of a user interacting with the user's online brokerageaccount and instructing the purchase of ten shares of the stockrepresented by node 402 at $500 per share. In the example, the brokerageassociated with node 404 additionally charges a $10 fee to facilitatethe purchase.

Transaction object 412 comprises three transaction effect objects 414,416, 418. In an embodiment, each of transaction effect objects 414, 416,418 comprises values associated with the accounting event represented bythe particular transaction effect object. As described above, the valuesgenerally indicate a debit or credit applied to a particular accountingaccount associated with a specified edge in a financial graph. In anembodiment, a separate set of data values representing a plurality ofaccounting accounts are stored in association with each of edges 408,410. For example, edge 408 may be associated with data valuesrepresenting each of an assets account, a liabilities account, an equityaccount, an income account, an expenses account, and one or moresub-accounts.

Transaction effect object 414 represents an accounting event associatedwith a transfer of ten shares of the purchased stock (node 402) into abrokerage account (node 404). In the example of FIG. 4, transactioneffect object 414 is associated with the edge connecting node 402 andnode 404 because the accounting event represented by transaction effectobject 414 is related to both nodes. In general, a particulartransaction effect object is associated with a particular edge in afinancial graph connecting the nodes most relevant to the accountingevent represented by the transaction effect object. Thus, eachtransaction effect object essentially represents, in a way that is moreefficient for other computing processes and the general operation of theserver computer, an effect upon nodes in the graph of a particulartransaction, as represented in a transaction object and ultimately inthe transaction data obtained from a custodian.

According to financial accounting conventions, receiving a number ofshares of a security represents an increase to an asset accountingaccount, and an increase to an asset accounting account is a representedby a debit. Thus, in the example, transaction effect object 414 isspecified as a debit transaction. Transaction effect object 414 furtherspecifies that 10 units of the security are transferred and that thevalue of the increase to the assets accounting account is an amount of$5000.

Transaction effect object 418 represents the accounting eventcorresponding to a payment of a $10 brokerage fee for the transaction.According to financial accounting conventions, payment of a fee isrepresented as a debit to an expenses accounting account. Thus,transaction effect object 418 is specified as a debit transactionassociated with edge 408. Transaction effect object 416 represents anaccounting event corresponding to a transfer of cash to pay for thesecurity shares and the brokerage fee and is represented as a credit tothe asset account associated with edge 410. In the example, the sum ofthe transaction effect object debits ($5000+$10) is equal to the sum ofthe transaction effect objects credits ($5010).

FIG. 5 illustrates example components of a transaction effect object. Inan embodiment, a transaction effect object may specify an owner node502, a security node 504, an indication that the transaction effectrepresents a debit or a credit 506, an accounting account 508, a numberof units 510, and a value 512. In other embodiments, transaction effectobjects may specify more or fewer components.

In one embodiment, a transaction effect object is associated with aparticular edge in a financial graph by specifying a pair of nodes inthe graph that the particular edge connects, referred to in FIG. 5 as anowner node and a security node. In general, an owner node 502corresponds to a node in the financial graph representing an individual,legal entity, or financial account relative to which the associatedaccounting event occurred. Similarly, a security node 504 may representa particular security or other asset associated with as accountingevent, for example, an equity security, a cash account, a bond, or anyother financial instrument. Each of the owner node 502 and security node504 may be supplied as parameters to program code generating thetransaction effect, as described above in relation to FIG. 2.

In an embodiment, a transaction effect object specifies that theassociated accounting event represents either a debit or a credit 506.As described above, the specification of a particular accounting eventas either a debit or credit generally corresponds to financialaccounting conventions. In an embodiment, a transaction effect objectspecifies an accounting account 508 against which the correspondingdebit or credit is recorded. As described above, the specification of adebit or credit 506 and a particular accounting account 508 generallymay conform to financial accounting conventions.

In an embodiment, a transaction effect object optionally specifies avalue 512 representing a number of units representing the change to anasset position. For example, a transaction effect object associated witha stock purchase transaction object may specify a numerical valuerepresenting an increase in the number of shares of the stock. Asanother example, a transaction effect associated with a stock dividendthat does not affect the ownership of the stock may not specify a units510 value.

In an embodiment, a transaction effect object may optionally specify avalue 512 representing the magnitude of an income or an expenseoccurring relative to the associated financial position. For example, avalue 512 may reflect the value of stock shares obtained in a stockpurchase transaction, or the value of an amount of currency received ina foreign exchange transaction.

In an embodiment, a transaction effect object may store a set of values512, with each value in the set representing a different currency.Storing a collection of values in various currencies enablesreconciliation and other reports to be done more efficiently in multiplecurrencies. For example, referring again to FIG. 2, transaction 204 mayrepresent a foreign exchange transaction of United States dollars forNew Zealand dollars. In the example, the canonical transactionrepresentation includes the syntax “values”:[“2200.00 USD”, “2300.00NZD”], the syntax representing the specification of a single value asvalued in multiple currencies. In this manner, financial calculationsmay be more readily produced in each of the stored currencies withoutperforming currency conversion calculations.

4.0 Generating Performance Calculations

In an embodiment, the financial analysis system provides for theimplementation of various financial performance calculations for thepurposes of analyzing and reporting on obtained financial transactiondata. For example, financial performance calculations may includecalculations involving one or more assets in a financial graph such as,for example, total asset returns, internal rates of return, and dividendyields. Financial performance calculations may also refer to thegeneration of entire reports that involve many assets such, for example,income statements, balance sheets, and cash flow statements. Financialperformance calculations may be requested by users on various parts of afinancial graph, and the resulting reports may be displayed to the userin any number of formats.

In an embodiment, financial performance calculations may be defined interms of transaction effects. In other words, financial performancecalculations implemented by the financial analysis system may becalculated based on values contained in individual transaction effectobjects, and not based on the composite transaction objects comprisingthe transaction effect objects. For example, in order to perform acalculation of the internal rate of return for a particular asset,rather than taking into account each of the high-level transactionobjects associated with the asset and the transaction typescorresponding to those objects, the calculation may be performed byanalyzing the stored transaction effect objects associated with edges inthe graph connecting the node representing the asset. In this manner,financial performance calculation implementations may be independent ofthe addition, removal, or modifications of particular transaction objecttypes. Similarly, transaction object types may be added, removed, ormodified in the system without change to the financial performancecalculations.

FIG. 6 illustrates a relationship between transaction object types,transaction effects, and financial performance calculations. Referringto FIG. 6, transaction objects types 602 represent a collection oftransaction object types defined by the financial analysis system. Asdescribed above, the collection of transaction types generally representthe set of represented financial transactions and may include, forexample, stock purchases, dividends, foreign exchange transactions, andany other defined transaction type. Transaction effects 604 representthe set of transaction effects defined as part of transaction objecttypes 602 and that serve as the basis for generated transaction effectobjects. As described above, in an embodiment, each of the transactionobject types 602 is defined in terms of similarly structured transactioneffect definitions and the resulting transaction effect objects may bereferenced separately from the containing transaction objects.

In an embodiment, financial performance calculations 606 represent a setof financial performance calculations defined by the system. Thearrangement of FIG. 6 provides an illustration of the abstraction layertransaction effects provide between the transaction object types 602 andfinancial performance calculations 606, enabling modifications to bemade to either transaction object types 602 or financial performancecalculations 606 without directly affecting the other.

In an embodiment, some financial performance calculations may take intoaccount transaction object types associated with transaction effects.For example, a calculation for dividend yield may be implemented byretrieving transaction objects representing dividend transactions andnot transaction objects associated with other transaction types. In thismanner, the dividend yield calculation is calculated based ontransaction effects associated with dividend transaction objects, andnot on transaction effects associated with unrelated types oftransactions.

5.0 Hardware Overview

According to one embodiment, the techniques described herein areimplemented by one or more special-purpose computing devices. Thespecial-purpose computing devices may be hard-wired to perform thetechniques, or may include digital electronic devices such as one ormore application-specific integrated circuits (ASICs) or fieldprogrammable gate arrays (FPGAs) that are persistently programmed toperform the techniques, or may include one or more general purposehardware processors programmed to perform the techniques pursuant toprogram instructions in firmware, memory, other storage, or acombination. Such special-purpose computing devices may also combinecustom hard-wired logic, ASICs, or FPGAs with custom programming toaccomplish the techniques. The special-purpose computing devices may bedesktop computer systems, portable computer systems, handheld devices,networking devices or any other device that incorporates hard-wiredand/or program logic to implement the techniques.

For example, FIG. 7 is a block diagram that illustrates a computersystem 700 upon which an embodiment of the invention may be implemented.Computer system 700 includes a bus 702 or other communication mechanismfor communicating information, and a hardware processor 704 coupled withbus 702 for processing information. Hardware processor 704 may be, forexample, a general purpose microprocessor.

Computer system 700 also includes a main memory 706, such as a randomaccess memory (RAM) or other dynamic storage device, coupled to bus 702for storing information and instructions to be executed by processor704. Main memory 706 also may be used for storing temporary variables orother intermediate information during execution of instructions to beexecuted by processor 704. Such instructions, when stored innon-transitory storage media accessible to processor 704, rendercomputer system 700 into a special-purpose machine that is customized toperform the operations specified in the instructions.

Computer system 700 further includes a read only memory (ROM) 708 orother static storage device coupled to bus 702 for storing staticinformation and instructions for processor 704. A storage device 710,such as a magnetic disk or optical disk, is provided and coupled to bus702 for storing information and instructions.

Computer system 700 may be coupled via bus 702 to a display 712, such asa cathode ray tube (CRT), for displaying information to a computer user.An input device 714, including alphanumeric and other keys, is coupledto bus 702 for communicating information and command selections toprocessor 704. Another type of user input device is cursor control 716,such as a mouse, a trackball, or cursor direction keys for communicatingdirection information and command selections to processor 704 and forcontrolling cursor movement on display 712. This input device typicallyhas two degrees of freedom in two axes, a first axis (e.g., x) and asecond axis (e.g., y), that allows the device to specify positions in aplane.

Computer system 700 may implement the techniques described herein usingcustomized hard-wired logic, one or more ASICs or FPGAs, firmware and/orprogram logic which in combination with the computer system causes orprograms computer system 700 to be a special-purpose machine. Accordingto one embodiment, the techniques herein are performed by computersystem 700 in response to processor 704 executing one or more sequencesof one or more instructions contained in main memory 706. Suchinstructions may be read into main memory 706 from another storagemedium, such as storage device 710. Execution of the sequences ofinstructions contained in main memory 706 causes processor 704 toperform the process steps described herein. In alternative embodiments,hard-wired circuitry may be used in place of or in combination withsoftware instructions.

The term “storage media” as used herein refers to any non-transitorymedia that store data and/or instructions that cause a machine tooperation in a specific fashion. Such storage media may comprisenon-volatile media and/or volatile media. Non-volatile media includes,for example, optical or magnetic disks, such as storage device 710.Volatile media includes dynamic memory, such as main memory 706. Commonforms of storage media include, for example, a floppy disk, a flexibledisk, hard disk, solid state drive, magnetic tape, or any other magneticdata storage medium, a CD-ROM, any other optical data storage medium,any physical medium with patterns of holes, a RAM, a PROM, and EPROM, aFLASH-EPROM, NVRAM, any other memory chip or cartridge.

Storage media is distinct from but may be used in conjunction withtransmission media. Transmission media participates in transferringinformation between storage media. For example, transmission mediaincludes coaxial cables, copper wire and fiber optics, including thewires that comprise bus 702. Transmission media can also take the formof acoustic or light waves, such as those generated during radio-waveand infra-red data communications.

Various forms of media may be involved in carrying one or more sequencesof one or more instructions to processor 704 for execution. For example,the instructions may initially be carried on a magnetic disk or solidstate drive of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 700 canreceive the data on the telephone line and use an infra-red transmitterto convert the data to an infra-red signal. An infra-red detector canreceive the data carried in the infra-red signal and appropriatecircuitry can place the data on bus 702. Bus 702 carries the data tomain memory 706, from which processor 704 retrieves and executes theinstructions. The instructions received by main memory 706 mayoptionally be stored on storage device 710 either before or afterexecution by processor 704.

Computer system 700 also includes a communication interface 718 coupledto bus 702. Communication interface 718 provides a two-way datacommunication coupling to a network link 720 that is connected to alocal network 722. For example, communication interface 718 may be anintegrated services digital network (ISDN) card, cable modem, satellitemodem, or a modem to provide a data communication connection to acorresponding type of telephone line. As another example, communicationinterface 718 may be a local area network (LAN) card to provide a datacommunication connection to a compatible LAN. Wireless links may also beimplemented. In any such implementation, communication interface 718sends and receives electrical, electromagnetic or optical signals thatcarry digital data streams representing various types of information.

Network link 720 typically provides data communication through one ormore networks to other data devices. For example, network link 720 mayprovide a connection through local network 722 to a host computer 724 orto data equipment operated by an Internet Service Provider (ISP) 726.ISP 726 in turn provides data communication services through the worldwide packet data communication network now commonly referred to as the“Internet” 728. Local network 722 and Internet 728 both use electrical,electromagnetic or optical signals that carry digital data streams. Thesignals through the various networks and the signals on network link 720and through communication interface 718, which carry the digital data toand from computer system 700, are example forms of transmission media.

Computer system 700 can send messages and receive data, includingprogram code, through the network(s), network link 720 and communicationinterface 718. In the Internet example, a server 730 might transmit arequested code for an application program through Internet 728, ISP 726,local network 722 and communication interface 718.

The received code may be executed by processor 704 as it is received,and/or stored in storage device 710, or other non-volatile storage forlater execution.

In the foregoing specification, embodiments of the invention have beendescribed with reference to numerous specific details that may vary fromimplementation to implementation. The specification and drawings are,accordingly, to be regarded in an illustrative rather than a restrictivesense. The sole and exclusive indicator of the scope of the invention,and what is intended by the applicants to be the scope of the invention,is the literal and equivalent scope of the set of claims that issue fromthis application, in the specific form in which such claims issue,including any subsequent correction.

What is claimed is:
 1. A computing system configured to efficientlycalculate and display financial performance characteristics of afinancial portfolio based on effects of a plurality of transaction dataitems, the computing system comprising: a data store configured to storeassets and liabilities of a financial portfolio in a financial datastructure, the financial data structure including a complex mathematicalgraph comprising: a plurality of nodes, each of the nodes storinginformation associated with at least one of: an asset, an account inwhich an asset is held, an individual who owns an asset, or a legalentity that owns an asset; a plurality of edges, each of the edgesstoring a relationship between two of the nodes; and at least onesub-graph comprising: a subset of the plurality of nodes, the subset ofthe plurality of nodes including at least an account node and an assetnode; a subset of the plurality of edges, wherein: at least some of thesubset of the plurality of edges connects an account node and an assetnode of the subset of the plurality of nodes, each edge of the subset ofthe plurality of edges represents at least a part of at least oneaccounting event related to both nodes to which the edge is connected,an accounting event comprises a financial transaction having transactioneffects impacting both nodes connected to an edge, and each edge of thesubset of the plurality of edges is associated with a plurality ofaccounting accounts, the accounting accounts including at least anassets account, a liabilities account, an equity account, an incomeaccount, an expenses account, and one or more sub-accounts, theaccounting accounts being configured to be modified by one or moretransaction effects of a financial transaction involving both nodesconnected to an edge; a computer processor in communication with the oneor more electronic data sources; and a non-transitory computer readablestorage medium storing one or more computing units, wherein: each of theone or more computing units includes program instructions configured forexecution by the computer processor, the one or more computing units areconfigured to generate a transaction effects data format for a financialtransaction, the transaction effects data format comprises one or moretransaction effects, and a transaction effect comprises an element of afinancial transaction and further comprises: an identification of anaccount node; an identification of an asset node, the identified accountnode and the identified asset node both being involved in the financialtransaction and being connected by an edge to form at least a portion ofat least one sub-graph of the complex mathematical graph representingthe financial portfolio; an indication of whether the transaction effectproduces a debit or credit; an indication of at least one account of theaccounting accounts; an indication of a number of units involved in thefinancial transaction; and an indication of a value of the number ofunits, and wherein the one or more computing units include: a custodianinterface unit in communication with an asset custodian data source andconfigured to cause the computer processor to: receive, from a pluralityof asset custodian data sources, a plurality of transaction data itemsrepresenting a plurality of financial transactions, wherein theplurality of transaction data items include at least a first transactiondata item in a first format and a second transaction data item in asecond format, wherein the first transaction data item and the secondtransaction data item are of a same type; a transaction objectgeneration unit configured to cause the computer processor to: receivethe plurality of transaction data items from the custodian interfaceunit; convert each of the transaction data items into the transactioneffects data format, the transaction effects data format comprising anoptimized transaction format useable for a plurality of transactiontypes, the transaction effects data format further indicating a type ofthe transaction data item; identify, based on types of the respectivetransaction data items, one or more transaction effects for eachtransaction data item; associate each of the transaction effects withrespective edges of the sub-graph based on account nodes and asset nodesidentified by each transaction effect; and store in the data store, forlater retrieval and calculation, each of the transaction effects for theplurality of transaction data items, wherein each of the transactioneffects is stored in relation to its associated edge connecting thenodes identified in the transaction effect; a view computation unitconfigured to cause the computer processor to: receive, via a graphicaluser interface, an interactive user input including an indication of aperformance calculation to be performed in connection with a report tobe generated; and a performance calculation unit configured to cause thecomputer processor to: receive the indication of the performancecalculation; and calculate, by using the complex mathematical graph, theperformance calculation by reference to the plurality of the transactioneffects stored in relation to their associated edges, and not byreference to the plurality of the transaction data items, wherein theview computation unit is further configured to cause the computerprocessor to: receive the calculated performance calculation; andgenerate the report including the calculated performance calculation. 2.The computing system of claim 1, wherein the view computation unit isfurther configured to cause the computer processor to: display thereport including the calculated performance calculation.
 3. Thecomputing system of claim 1, wherein each of the edges represents atleast one of an asset ownership, a liability, or an equity ownership. 4.The computing system of claim 1, wherein the complex mathematical graphcomprises a non-displayed graph.
 5. The computing system of claim 1,wherein each of the one or more transaction effects further comprisesindications of a plurality of values, each of the plurality of valuesrepresenting a different currency.
 6. The computing system of claim 5,wherein calculating the performance calculation further comprisesreferencing one of the plurality of values indicated by each of the oneor more.
 7. The computing system of claim 1, wherein converting each ofthe transaction data items into the transaction effects data formatcomprises: determining, based on the type of the transaction data item,an associated transaction effects data format of a plurality oftransaction effects data formats; and converting the transaction dataitem into the determined transaction effects data format associated withthe type of the transaction data item.
 8. The computing system of claim7, wherein each of the plurality of transaction effects data formats isassociated with a transaction identifier, a transaction type, and atleast one data associated with a transaction.
 9. The computing system ofclaim 7, wherein the performance calculation is calculated by referenceto only those transaction effects associated with a single type oftransaction data item.